{{tag>edubuntu ltsp personnalisation menu menueditor edubuntu alacarte}}

====== Edubuntu - Menus ltsp personnalisés ======

===== Objectifs =====

La documentation d' EDUBUNTU permet, via MenuEditor, de créer les menus des clients légers et de les affecter aux comptes LTSP de son choix. En revanche on ne peut les relire et à fortiori les compléter.

Ce document a pour objectif de décrire une méthode permettant d'y parvenir.

===== Ressources =====

Les menus d'Ubuntu sont spécifiés dans le document suivant :

http://standards.freedesktop.org/menu-spec/menu-spec-latest.html

Il se présentent sous forme de structures XML en deux branches de répertoires pouvant se situer à différents endroits de l'arborescence du disque.

Ainsi, l'organisation du menu LTSP par défaut de menueditor se trouve dans :

  /etc/edubuntu-menueditor/monmenu

Monmenu est le nom que l'on a donné à menueditor pour personnaliser le ou les menus clients.
C'est ce menu qu'on ne peut relire, après qu'on l'ai créé.



===== Méthode =====


**__Première étape__**



La première étape consiste à créer, sur le serveur, un compte client de référence ayant le statut administrateur qui va servir de compte où sera bâti le menu client de référence à l'aide de menueditor. Ce menu, dans le sous-répertoire "xdg",
  /etc/menu-editor/monmenu/xdg/application.menu
porte le nom par défaut de "application.menu". On ne peut pas le changer.


{{:carte11.png}}


**__Deuxième étape__**

On quitte le serveur et on passe sur le compte client de référence du client léger.
Avec un clic droit sur le menu Applications en haut à gauche, on édite le menu que l'on vient de créer dans le répertoire monmenu. Cette fois l'éditeur de menu par défaut est "Alacarte".

{{:carte2.png}}

Les modifications apportées à ce menu initial se trouvent dans /home/compteREF/.config/menus.
Ce menu secondaire s'appelle aussi application.menu.

Il comprend une balise <PARENT> qui renvoie à l'emplacement d'origine une balise <INCLUDE> qui renvoie vers les exécutables dans /home/compteREF/.local/share/applications et une balise <MENU> dans /home/compteREF/.local/share/desktop-directories où se trouvent les sous-menus.

{{:carte3.png}}

**__Troisième étape__**

Les trois exemples suivants couvrent l'essentiel de la construction des menus : 

Exemple de menu où un navigateur pointe vers un site Internet

{{:carte4.png}}

Exemple de menu où une application ouvre un fichier

{{:carte5.png}}

Exemple de menu de script

{{:carte6.png}}

**__Quatrième étape__**

Voici deux méthodes de reproduction du menu de référence vers les autres menus d'un même groupe :

__méthode n°1__ :

script : 

    clear
    echo
    ls /home
    echo
    echo -n "Veuillez choisir le compte source: "
    read comptes
    
    while [ -z "$comptes" ]
    
	do
	    echo
	    echo "Saisie incorrecte"
	    echo -n "Champs vide veuillez ressaisir le nom du compte: "
	    read comptes
	done
	
    if [ -e "/home/$comptes" ]
    then
    f=f
    elif [ -z "$comptes" ]
    then
    echo "Entrée inconnue, appuyez sur une touche pour continuer"
    read touche
    else
    echo
    echo "Le compte $comptes n'éxiste pas"
    fi
    echo
    ls /home
    echo
    echo -n "Veuillez choisir le compte ou sera stocké les menus: "
    read compted
    
    while [ -z "$compted" ]
	do
	    echo
	    echo "Saisie incorrecte"
	    echo -n "Champs vide veuillez ressaisir le nom du compte: "
	    read compted
	done
    if [ -e "/home/$compted" ]
    then
    i=iii
    elif [ -z "$compted" ]
    then
    echo
    echo "Entrée inconnue, appuyez sur une touche pour continuer"
    read touch
    else
    echo
    echo "Le compte $compted n'éxiste pas"
    fi
    echo
    echo "Comme compte source vous avez choisi: $comptes"
    echo "Comme compte de destination vous avez choisi: $compted"
    echo
    echo -n "Vous confirmez ? [Y/n]: "
    read conf
      if [ "$conf" = Y ] || [ "$conf" = y ] || [ -z "$conf" ]
      then
      sudo apt-get install sl
      cp -R /home/$comptes/.config /home/$compted
      cp -R /home/$comptes/.local /home/$compted
      sl
      elif [ "$conf" = n ] || [ "$conf" = N ]
      then
      l=i
      else
      echo
      echo "Entre inconnue, appuyez sur une touche pour continuer"
      read touche
      fi

__méthode n°2__ :

manuellement : 

  cp -R /home/compteREF/.config /home/compteDESTINATAIRE
  cp -R /home/compteREF/.local /home/compteDESTINATAIRE
  

----

//Contributeurs principaux : [[utilisateurs:faco06|Thomas Casas]], [[utilisateurs:faco06|Ilyes Ben Kheder]].//